﻿using System;
using System.Collections.Generic;

namespace DTO.Clases
{
    /// <summary>
    /// Representa una clase para los datos de Factura de Proveedor.
    /// </summary>
    public class FacturaProveedor
    {
        /// <summary>
        /// Obtiene o establece el valor del Id unico de la factura.
        /// </summary>
        public int Id { set; get; }

        /// <summary>
        /// Obtiene o establece el Proveedor de la factura.
        /// </summary>
        public Proveedor Proveedor { set; get; }

        /// <summary>
        /// Obtiene o la forma de pago de la factura.
        /// </summary>
        public FormaPago FormaPago { set; get; }

        /// <summary>
        /// Obtiene o establece el valor de la Caja de la Factura.
        /// </summary>
        public Caja Caja { set; get; }

        /// <summary>
        /// Obtiene o establece el valor del estado de la Factura.
        /// </summary>
        public Estado EstadoFactura { set; get; }

        /// <summary>
        /// Obtiene o establece el Usuario que ingreso la factura.
        /// </summary>
        public Usuario Usuario { set; get; }

        /// <summary>
        /// Obtiene o establece el valor del número de la factura.
        /// </summary>
        public string Numero { set; get; }

        /// <summary>
        /// Obtiene o establece el valor del número editado de la factura.
        /// </summary>
        public string NumeroEdit { set; get; }

        /// <summary>
        /// Obtiene o establece el valor de la fecha de ingreso de la factura.
        /// </summary>
        public DateTime FechaIngreso { set; get; }

        /// <summary>
        /// Obtiene o establece el valor de la fecha limipte de pago de la factura.
        /// </summary>
        public DateTime FechaLimite { set; get; }

        /// <summary>
        /// Obtiene o establece el valor del descuento de la Factura Proveedor.
        /// </summary>
        public double Descuento { set; get; }

        /// <summary>
        /// Obtiene o establece el estado de la Factura
        /// </summary>
        public bool Estado { set; get; }

        /// <summary>
        /// Obtiene o establece el listdo de productos
        /// </summary>
        public List<ProductoFacturaProveedor> Productos { set; get; }

        /// <summary>
        /// Inicializa una nueva instancia de la clase FacturaProveedor.
        /// </summary>
        public FacturaProveedor()
        {
            this.Id = 0;
            this.Proveedor = new Proveedor();
            this.EstadoFactura = new Estado();
            this.Caja = new Caja();
            this.Usuario = new Usuario();
            this.Numero = "";
            this.FechaIngreso = DateTime.Today;
            this.FechaLimite = DateTime.Today;
            this.Descuento = 0.0;
            this.Estado = true;
            this.Productos = new List<ProductoFacturaProveedor>();
        }
    }
}